//一个片上包含4个簇，该类为DSP结构的最上层
#ifndef DSP_CHIP_H
#define DSP_CHIP_H

#include "DSP_cluster.h"
#include<vector>

class DSP_chip{
public:
    DSP_chip() {
        DSP_clusters = new std::vector<DSP_cluster*>();
        DSP_clusters->resize(4, nullptr); //一个片上包含4个簇
        PIDs = new std::vector<pid_t>();
        PIDs->resize(4, -1); //初始化为-1，表示该簇未被任何进程占用
    }
    ~DSP_chip() {
        delete DSP_clusters;
        delete PIDs;
    }
    DSP_cluster* get_cluster(int cluster_id);
    //TODO:操作设备的接口，以一个簇为单位
    int open_dev(int cluster_id, pid_t pid);
    int close_dev(int cluster_id);
    void init_Cluster(int cluster_id);
    void destroy_Cluster(int cluster_id);
    // int dev_owner(int cluster_id);

private:
    std::vector<DSP_cluster*>*  DSP_clusters;
    std::vector<pid_t>*  PIDs;
};

#endif //DSP_CHIP_H